The size and complexity of software has dramatically increased during the last decades. Various software modeling techniques were developed in order to understand previously developed software as well as to develop complex software. These techniques include, for example, structural partitioning, regular model search and a crosscutting code based technique known as aspects.
There is a growing need to provide efficient methods and computer program products that will assist in understanding software, especially software that is modeled by a high complexity model.